1. Wstęp do CDI
2. Beans
3. Zarządzanie beanami
4. Scopes and context
5. Events
6. Interceptors
7. Decorator
Wstrzykiwnie zależności odbywa się przez adnotację:
@Inject, należy zaimportować adnotację javax.inject.Inject
Wstrzykiwać możemy w 3 miejscach:
- Pole:
  1. @ConversationScoped
  2. public class FieldInjection {
  3.         @Inject
  4.         private Bank bank;
  5. }
  6.  
- Konstruktor:
  1. @ConversationScoped
  2. public class ConstructorInjection {
  3.         private Bank bank;
  4.         @Inject
  5.         public ConstructorInjection(Bank bank) {
  6.                 this.bank = bank;
  7.         }
  8. }
  9.  
- metoda:
  1. @ConversationScoped
  2. public class MethodInjection {
  3.         @Inject
  4.         public BigDecimal getMoney(Bank bank) {
  5.                 return bank.getMoney(100);
  6.         }
  7. }
  8.  
Możliwe jest wstrzyknięcie bez użycia adnotacji @Inject:
- adnotacja @Produces - wstrzykiwanie odbywa się automatycznie
  1. @ConversationScoped
  2. public class ProducerInjection {
  3.         @Produces
  4.         public EntityManager getMoney(EntityManagerFactory emf) {
  5.                 return emf.createEntityManager();
  6.         }
  7. }
- adnotacja @Observes - wstrzykiwanie odbywa się automatycznie
  1. @ConversationScoped
  2. public class ObserverInjection {
  3.         public void onEvent(@Observes MyEvent event, Client textService) {
  4.         return textService.send(event.getEventMessage());
  5.     }
  6. }
- zdarzenie wywołuje się przez CDI.current().getBeanManager().fireEvent(new MyEvent("Witaj!")
a Client textService jest wstrzyknięty.
created by cv.java.org.pl © 2023 All Rights Reserved.